File compression before transmission is a technique for substantially increasing the speed of file transmission through a network. If the size of a file to be transmitted is reduced by half by compression, the time needed for transmission is also reduced by half, so that the transmission speed is equivalently doubled.
For example, ZIP compression and the like are known as general file compression techniques. Such file compression techniques take advantage of the regularity of files. When data having low regularity such as a still or moving image is compressed, the compression rate is likely to be low, and the file size cannot be sufficiently reduced by the compression before transmission.
According to a first other technique for increasing the speed of file transmission, files are cached on the receiver side. In this case, the network traffic can be reduced by preventing repeated transmission of identical data. According to a second other technique, for example, a transmitter transmits only data indicating the difference from a previously transmitted file, and a receiver restores a desired file from the data indicating the difference and the previously transmitted file. However, neither of the first and second techniques achieves the effect of reducing the volume of transmitted data when a file is first transmitted, although the effect can be achieved when frequently updated files are transmitted or when a file is transmitted to more than one destination.
Incidentally, in many cases where high reliability is required in data transmission in an IP (Internet Protocol) network, TCP (transmission control protocol) transmission is performed. In TCP transmission, when a receiver receives a packet from a transmitter, the receiver returns a receipt acknowledgement signal, which is denoted by ACK. When the transmitter receives the ACK signal, the transmitter transmits the next packet. When the ACK signal is not returned (for example, because of packet loss), the transmitter retransmits the same packet. Since the above procedure is performed in TCP transmission, packets are received by receivers with high reliability. However, in the above procedure, when the transmitter and the receiver are distanced through a network, the round trip time (RTT) of data increases, so that the effective transmission rate decreases.
On the other hand, in UDP (User Datagram Protocol) transmission, each transmitter transmits packets without receiving the receipt acknowledgement signal from a receiver. Therefore, UDP transmission can achieve higher effective transmission rates than TCP transmission, although TCP transmission is superior to UDP transmission in communication reliability.
Further, in a technique proposed for increasing communication reliability in non-procedure communication in which no operation for confirmation of transmission is performed as in UDP transmission, transmitted data are encoded so that errors can be corrected on the receiver side even when a packet is lost. For example, in a technique which is disclosed in Japanese Laid-open Patent Publication No. 2006-271006, source data is divided into m data pieces, and a result of an exclusive OR operation of one or more of the m data pieces each corresponding to a “1” bit in each of n m-bit data series is obtained and transmitted together with the corresponding data series, where the result of the exclusive OR operation and the corresponding data series constitute a set of encoded data.
However, in the techniques in which data to be transmitted is encoded so as to enable a receiver to perform error correction, the encoded data become voluminous, so that the data transmission rate is substantially lowered. In addition, even in other data encoding techniques, as well as the above techniques, reduction in the volume of encoded data by use of an efficient procedure is demanded.